package com.hzit.cart.controller;

import com.hzit.cart.dto.ItemDTO;
import com.hzit.cart.interceptor.LoginInterceptor;
import com.hzit.cart.service.CartService;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.system.api.domain.Item;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * 类名：
 * 作者：WF
 * 功能：
 */
@Controller
@RequestMapping
public class CartController {
	@Autowired
	private CartService cartService;

	//1. 列表购物车
	@GetMapping({"/","/cart.html"})
	public String cart(Model model){
		//1.1 从redis中取得数据并转换为页面需要的数据结构（一个商家对应多个商家的商品列表）
		Map<String, List<ItemDTO>> cartList = cartService.findItemsFromRedis();
		//1.2 将数据放到model中
		model.addAttribute("cartList",cartList);
		return "cart";
	}

	//2. 添加购物车
	@GetMapping("/cart/add/{itemId}/{num}")
	public String addCart(@PathVariable Long itemId,
	                      @PathVariable Integer num,
	                      RedirectAttributes attributes){
		//2.1 添加到购物车到redis中
		cartService.addCart(itemId,num);
		//2.2 重写向时设置参数值
		attributes.addAttribute("itemId",itemId);
		attributes.addAttribute("num",num);

		return "redirect:http://cart.hzit.com/success";
	}
	// 添加购物车成功页面
	@GetMapping("/success")
	public String success(@RequestParam("itemId") Long itemId,
	                      @RequestParam("num") Integer num,
	                      Model model){
		//2.2 构造商品id及商品数量查询出要添加的哪件商品
		ItemDTO dto = cartService.findItemByItemId(itemId,num);
		model.addAttribute("dto",dto);
		//2.3 跳转到成功页面
		return "success-cart";
	}

	// 到订单页面
	@GetMapping("/cart/toOrder")
	public String toOrder(HttpSession session){
		//1. 生成一个随机的uuid串并存到redis中
		String token = cartService.createToken();
		//2. 将生成的token准备传入到订单页面中
		session.setAttribute("token",token);
		return "redirect:http://order.hzit.com";
	}
}
